package org.szy.core.common.uilts;

import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.ContentType;
import cn.hutool.json.JSONUtil;
import org.noear.solon.core.handle.Context;
import org.szy.core.common.entity.R;

import java.io.IOException;

/**
 * 响应工具类
 *
 * @author 孙志阳
 * @date 2023-02-09
 * @since 1.0.0
 **/
public class ResponseUtil {


    /**
     * 以流的方式响应错误信息，默认错误消息
     *
     * @author wangbuhao
     * @date 2022/8/4 9:41
     **/
    public static void renderError(Context ctx) throws IOException {
        renderError(ctx, null);
    }

    /**
     * 以流的方式响应错误信息，指定错误消息
     *
     * @author wangbuhao
     * @date 2022/8/4 9:41
     **/
    public static void renderError(Context ctx, String msg) throws IOException {
        ctx.charset(CharsetUtil.UTF_8);
        ctx.contentType(ContentType.JSON.toString());
        String json = JSONUtil.toJsonStr(ObjectUtil.isNotEmpty(msg) ? R.fail(msg) : R.ok());
        ctx.outputAsJson(json);
    }

    /**
     * 以流的方式响应错误信息，指定错误码和错误消息
     *
     * @author wangbuhao
     * @date 2022/8/4 9:41
     **/
    public static void renderError(Context ctx, Integer code, String msg) throws IOException {
        ctx.charset(CharsetUtil.UTF_8);
        ctx.contentType(ContentType.JSON.toString());
        String json = JSONUtil.toJsonStr(R.restResult(code, msg, null));
        ctx.outputAsJson(json);
    }

    /**
     * 以流的方式响应错误信息，指定错误码和错误消息
     *
     * @author wangbuhao
     * @date 2022/8/4 9:41
     **/
    public static void renderError(Context ctx, Integer code, String msg, Object data) throws IOException {
        ctx.charset(CharsetUtil.UTF_8);
        ctx.contentType(ContentType.JSON.toString());
        String json = JSONUtil.toJsonStr(R.restResult(code, msg, data));
        ctx.outputAsJson(json);
    }
}
